#include "StartScene.h"
#include "config.h"
#include <QIcon>
#include "MainScene.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //调用初始化场景接口
    initScence();
    //添加背景图
    // 创建第一个背景图（初始位置：0, 0）
    bgLabel1 = new QLabel(this);
    bgLabel1->setPixmap(QPixmap(":/new/prefix1/6.png"));
    bgLabel1->resize(GAME_WIDTH, GAME_HEIGHT);
    bgLabel1->move(0, 0);

    // 创建第二个背景图（初始位置：0, -GAME_HEIGHT，即第一个背景图的上方）
    bgLabel2 = new QLabel(this);
    bgLabel2->setPixmap(QPixmap(":/new/prefix1/6.png"));
    bgLabel2->resize(GAME_WIDTH, GAME_HEIGHT);
    bgLabel2->move(0, -GAME_HEIGHT);
    //添加标题
    titleLabel = new QLabel (this );
    titleLabel->setText("飞机大战");
    //标题样式
    titleLabel->setStyleSheet("font:bold 40px;color:black;");
    //标题位置
    titleLabel->move((GAME_WIDTH-200)/2,100);

    //添加开始按钮
    startBtn = new QPushButton("开始游戏",this);
    startBtn->resize(150,50);
    //按钮样式
    startBtn->setStyleSheet(
        "QPushButton{background-color: red; color: white; font: bold 20px; border-radius: 10px;}"
        "QPushButton:hover{background-color: darkred;}"
        );
    //按钮位置
    startBtn->move((GAME_WIDTH-150)/2,400);
    // 结束按钮
    exitBtn = new QPushButton("退出游戏", this);
    exitBtn->resize(150, 50);
    exitBtn->setStyleSheet(
        "QPushButton{background-color: gray; color: white; font: bold 20px; border-radius: 10px;}"
        "QPushButton:hover{background-color: darkgray;}"
        );
    exitBtn->move((GAME_WIDTH - 150) / 2, 480); // 放在开始按钮下方


    // 连接结束按钮到退出应用
    connect(exitBtn, &QPushButton::clicked, this, [=]() {
        this->close(); // 关闭当前窗口
        // 或者直接调用 qApp->quit(); 退出整个应用
    });
    // 计算按钮垂直居中位置
    const int buttonYOffset = (GAME_HEIGHT - 150) / 2;  // 垂直居中偏下

    // 开始按钮
    startBtn->move((GAME_WIDTH - 150) / 2, buttonYOffset);

    // 结束按钮
    exitBtn->move((GAME_WIDTH - 150) / 2, buttonYOffset + 70);  // 间隔70px
    //背景滚动
    // 背景滚动定时器
    bgTimer = new QTimer(this);
    connect(bgTimer, &QTimer::timeout,this,[=](){
        // 同时移动两个背景图
        bgLabel1->move(bgLabel1->x(), bgLabel1->y() + 1);
        bgLabel2->move(bgLabel2->x(), bgLabel2->y() + 1);

        // 当第一个背景图完全移出窗口时，将其重置到第二个背景图的上方
        if (bgLabel1->y() >= GAME_HEIGHT) {
            bgLabel1->move(0, bgLabel2->y() - GAME_HEIGHT);
        }

        // 当第二个背景图完全移出窗口时，将其重置到第一个背景图的上方
        if (bgLabel2->y() >= GAME_HEIGHT) {
            bgLabel2->move(0, bgLabel1->y() - GAME_HEIGHT);
        }
    });
    bgTimer->start(10); // 每10ms触发一次
    connect(startBtn, &QPushButton::clicked, this, [=](){
        // 隐藏当前开始页面
        this->hide();
        // 创建并显示主游戏场景
        MainScene *mainScene = new MainScene();
        mainScene->show();
        // 连接主场景的关闭信号到开始场景的显示槽函数
        connect(mainScene, &MainScene::destroyed, this, [=](){
            this->show();
        });
    });
}

Widget::~Widget() {}

void Widget::initScence()
{
    // 设置窗口的固定尺寸
    setFixedSize(GAME_WIDTH,GAME_HEIGHT);
    //设置标题
    setWindowTitle(GAME_TITLE);
    //加载图标
    setWindowIcon(QIcon(":/new/prefix1/3.jpg"));

    connect(startBtn, &QPushButton::clicked, this, [=](){
        // 隐藏当前开始页面
        this->hide();

        // 创建并显示主游戏场景


        // 连接主场景的关闭信号到开始场景的显示槽函数

    });
}
